5 REM *** LOAD ML FROM DISK OR TAPE *** 10 D=8:E=65:A=E:F=147:E$=CHR$(F):P=57812:L=62631:S=62957:IFPEEK(687)=54THEN25 15 POKEF,0:SYSPCHR$(E)+" COORD.OBJ",D,1:SYSL:E=E+1:IFE PRESS  D [146] TO RUN THE DEMO AND RETURN" 85 PRINTTAB(13)"TO THIS MENU":PRINT"> PRESS  M [146] TO RUN THE MOUNTAIN DEMO -" 90 PRINT" WHICH INCLUDES THE SAVE/LOAD ROUTINE" 95 PRINT:PRINT"> PRESS ANY OTHER KEY TO END THE PROGRAM" 100 POKE198,0 105 GETNR$:ON-(NR$="")-2*(NR$="D")-3*(NR$="M")GOTO105,115,120 110 GOTO175 115 GOSUB185:GOTO365 120 GOSUB185:GOTO465 150 REM *** RESTORE DEFAULT DISPLAY *** 155 IFPEEK(198)=0THEN155:REM WAIT FOR A KEYPRESS TO END PROGRAM 160 POKE198,0:REM TIDY UP KEYPRESS IF IT COMES 165 POKEFG,PEEK(BG)+1:REM ENSURE TEXT COLOR IS DIFFERENT FROM BACKGROUND 170 POKE53270,200:POKE56576,151:POKE53265,27:POKE53272,21:IFSFTHENRETURN 175 END 180 REM *** SET UP HI-RES *** 185 POKE56576,(PEEK(56576)AND252)OR(3-BANK):REM SET BANK 190 POKE53265,PEEK(53265)OR32:REM TURN ON BITMAP 195 IFMFTHENPOKE53270,PEEK(53270)OR16:REM SET MULTICOLOR IF DESIRED 200 POKE53272,(COLOFFSET*16+SCNOFFSET*8):REM POSITION HI-RES AND COLOR MEMORIES 205 RETURN 210 REM *** SCREEN SAVE/LOAD SUBROUTINE *** 215 REM NOTE: IS DEPENDENT ON VARIABLES FROM MAIN PROGRAM 220 D=8:E=49:OK=1:B(1)=BA*64+SC*32:T(1)=B(1)+32:B(2)=BA*64+CO*4:T(2)=B(2)+4 225 B(3)=208:T(3)=B(3)+1:B(4)=216:T(4)=B(4)+4:SF=1:GOSUB165:SF=0 230 PRINTE$:PRINT 235 PRINTTAB(7)"** SAVE OR LOAD SCREEN **":PRINT:INPUT" SCREEN NAME";SN$ 240 GV=LEN(SN$):ON-(GV<1ORGV>15)GOTO230:PRINT 245 PRINT"> FOR SAVE - PRESS S[146]":PRINT:PRINT"> FOR LOAD - PRESS L[146]" 250 GETL$:IFL$=""ORL$<>"S"ANDL$<>"L"THEN250 255 PRINT:PRINT:PRINT" RESULTS[146] - NAME IS "SN$:PRINTTAB(11)"AND THIS IS A "; 260 IFL$="S"THENPRINT"SAVE":GOTO270 265 PRINT"LOAD" 270 PRINT:PRINT:PRINTTAB(6)">> IF CORRECT - PRESS C[146] <<" 275 PRINT:PRINTTAB(5)"ANY OTHER KEY ALLOWS CHANGES" 280 GETM$:ON-(M$="")-2*(M$="C")GOTO280,290 285 GOTO230 290 PRINTE$:PRINT" SAVING:"SN$:IFL$="L"THENPRINTE$:PRINT" LOADING:"SN$:GOTO320 295 SYSP"@:"+CHR$(E)+SN$,D,1:POKE193,0:POKE194,B(OK) 300 POKE174,0:POKE175,T(OK):SYSS 305 E=E+1:OK=OK+1:IFOK<4THEN295 310 IFMFANDOK=4THEN295 315 GOTO340 320 POKEF,0:SYSPCHR$(E)+SN$,D,1:SYSL 325 E=E+1:IFE<52THEN320 330 IFMFANDE=52THEN320 335 IFD<>8THEN355 340 QA=0:OPEN15,8,15:INPUT#15,QA,QB$,QC,QD:CLOSE15:IFQA<20THEN355 345 PRINTE$:PRINT" DISK ERROR!":PRINT:PRINTTAB(13)" DISK STATUS [146]" 350 PRINT:PRINTTAB(7)QA;QB$;QC;QD:END 355 GOSUB185:RETURN 360 REM *** DEMO *** 365 POKEBO,0:POKEBG,0:POKEFG,1:Y=100:X=160:SYSCLEAR:O=X:N=Y:REM SET SCREEN 370 FORR=7TO87STEP8:POKEBG,-(R/8>7)*R/7:POKEFG,R/7-8*(R/8>7):REM RADIUS & COLOR 375 FORA=0TO(null)/2STEP2/R:X=R*SIN(A)+O:Y=R*COS(A)+N:SYSPLOT:REM SWEEP 90 DEGREES 380 X=-X+2*O:SYSPLOT:Y=-Y+2*N:SYSPLOT:X=-X+2*O:SYSPLOT:REM BUT PLOT 4 QUADRANTS 385 NEXTA 390 NEXTR 395 IFMFTHENPOKEM3,5:REM BIT PATTERN 1,1 PLOTS GREEN IF MULTICOLOR 400 Y=100:FORX=0TO319:POKEBG,X/8:POKEFG,X/8+1:SYSPLOT:NEXT:REMDRAW COLORED LINE 405 POKEBG,0:POKEFG,10:FORX=0TO319:SYSERASE:NEXT:REM ERASE LINE WITH LT. RED 410 Y=95:POKEFG,1:FORX=0TO319:SYSPLOT:IFPEEK(SETFLAG)THENSYSPLOT:GOTO420 415 SYSERASE:REM 395-405 MOVE A WHITE POINT BUT DON'T ERASE 420 NEXT 425 DEFFNMC(A)=INT(A)-(INT(A/2)<>INT(A)/2):SYSCL:R=95:POKE646,2 430 FORA=0TO319STEP2.26:X=FNMC(A):Y=R+80*SIN(A/20):SYSER:X=X+1:SYSPL:NEXT 435 FORA=0TO319STEP2.26:X=FNMC(A):Y=R+60*SIN(A/25):SYSPL:X=X+1:SYSER:NEXT 440 FORA=0TO319STEP2.26:X=FNMC(A):Y=R+40*SIN(A/30):SYSPL:X=X+1:SYSPL:NEXT 445 FORA=0TO319STEP2.26:X=FNMC(A):Y=R+60*SIN(A/25):SYSER:X=X+1:SYSER:NEXT 450 SF=1:GOSUB165:SF=0:GOTO65 460 REM *** MOUNTAIN DEMO *** 465 POKE198,0:POKEFG,11:POKEBG,0:POKEBO,0:X=-1:Y=-1:SYSCL 466 J%=RND(0)*10:J%=-J%*(J%>3ANDJ%<7):ON-(J%=0)GOTO466:J%=J%-4:C=2^J% 467 J=35-(C=1)*17:V=2:A=-20:J%=RND(0)*5:B=-J%*20:Z=1:E=0 468 H=INT((320-B)/(J-10)):DIM G(H+1):G(0)=B:DEFFNP(M)=(-1)^INT(RND(0)*3) 469 DEFFNM(R)=(N+(N<80)*N*.3)/133+(N>180)*(N-180)/79 470 FORQ=1TOH:G(Q)=G(Q-1)+J+RND(0)*10:IFG(Q)>=320THENO=Q:Q=H 471 NEXT:DIMR(O+1,2),T(O+1,2),U(O+1),B(O+1):J%=RND(0)*5:M=10+(J%+4-C)*5 472 J%=-(C>1):R(0,0)=G(0):T(0,0)=RND(0)*3.3-A:U(0)=1 473 FORQ=1TOO:R(Q,0)=G(Q):U(Q)=U(Q-1)*(1+2*(Q/C=INT(Q/C))) 474 T(Q,0)=T(Q-1,0)+((RND(0)*3.3+2)*U(Q)):N=R(Q,0) 475 T(Q,0)=T(Q,0)-(N<=160)*N/80+(N>160)*N/120:GOSUB483:B(Q)=-(K>I):NEXT:E=1 476 V=V+.004:M=M+V^1.0001:R(0,1)=R(0,0)+.9+RND(0)*.5*FNP(M) 477 T(0,1)=T(0,0)+RND(0)*2:FORQ=1TOO 478 R(Q,1)=R(Q,0)+(1+(B(Q)=0ANDB(Q+1)=1)*J%)*(RND(1)*(2+C/2)+.3) 479 N=R(Q,1):T(Q,1)=T(Q-1,1)+T(Q,0)-T(Q-1,0)+RND(0)*2 480 T(Q,1)=T(Q,1)-(B(Q)=1)*RND(1)*M*FNM(R)/20:IFR(Q,1)>R(Q-1,1)THEN482 481 R(Q,1)=R(Q-1,1)+.01:IFQ>=3THENT(Q,1)=T(Q-1+(C=1)*2,1)-6 482 GOSUB483:R(Q,0)=R(Q,1):T(Q,0)=T(Q,1):NEXT:R(0,0)=R(0,1):T(0,0)=T(0,1):GOTO476 483 H=R(Q-1,E):I=T(Q-1,E):J=R(Q,E):K=T(Q,E) 484 W=(J-H)*(1.3+RND(0)*.9-(K170ANDJ>0ANDJ<320THENJ=R(Q,0):K=T(Q,0):Z=0 486 FORX=HTOJSTEPW:Y=I+(K-I)*(X-H)/(J-H):SYSPL:NEXT:IFZTHENRETURN 487 FORY=0TO199STEP8:FORX=0TO319STEP8:U=FNP(M)*RND(0)*24 488 POKEFG,7+2*(Y>36+U)-9*(Y>76+U)+13*(Y>114+U):SYSER:IFPEEK(SE)THENSYSPL 489 NEXT:NEXT:POKE49,PEEK(47):POKE50,PEEK(48):GOSUB220:GOTO155